import forge from 'node-forge';

const PUBLIC_KEY = process.env.VUE_APP_PUBLIC_KEY;

/**
 * 加密密码
 * @param rawPwd
 * @returns {string}
 */
function rsaEncryptWithDefaultKey(rawPwd) {
    return rsaEncrypt(rawPwd, PUBLIC_KEY);
}

/**
 * RSA 加密密码
 *
 * @param {string} rawPwd - 未加密的密码
 * @param {string} publicKey - 公钥（PEM 格式）
 * @returns {string} - 十六进制格式的加密结果
 */
function rsaEncrypt(rawPwd, publicKey) {
    // 确保公钥是 PEM 格式
    let pemKey = publicKey;
    if (!pemKey.startsWith('-----BEGIN PUBLIC KEY-----')) {
        pemKey = '-----BEGIN PUBLIC KEY-----\n' + pemKey + '\n-----END PUBLIC KEY-----';
    }

    const publicKeyForge = forge.pki.publicKeyFromPem(pemKey);
    const encrypted = publicKeyForge.encrypt(rawPwd, 'RSAES-PKCS1-V1_5');
    return forge.util.bytesToHex(encrypted); // 返回十六进制格式
}

export {
    rsaEncrypt,
    rsaEncryptWithDefaultKey
}